package card;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import static java.util.Collections.swap;

public class CardDemo {

    private final String[] suits = {"♥","♠","♦","♣"};

    /*
       52张牌 J - K
             11  12 13
     */
    // 把买到的牌都放入这里面
    public List<Card> BuyCard(){
        List<Card> list = new ArrayList<>();

        // 把所有生成的牌都放入到cardList当中
        for(int i = 0;i < 4;i++){
            for(int j = 1;j <= 13;j++){
                Card card = new Card(suits[i],j);
                list.add(card);
            }
        }
        return list;
    }

    public void shuffle(List<Card> cardList) {
        Random random = new Random();
        for (int i = cardList.size() - 1; i > 0; i--) {
            int index = random.nextInt(i);// 左闭右开的,最后一张牌生成前面的随机数是1 - 50
            // 将下标index和i下标交换
            swap(cardList, i, index);
        }
    }

    private void swap(List<Card> cardList,int a,int b){
        Card tmp = cardList.get(a);
        cardList.set(a,cardList.get(b));
        cardList.set(b,tmp);
    }

    /*
      揭牌:
      三个人每个人轮流揭牌5张
     */

    public void getCard(List<Card> cardList){
        // 搞一个二维数组用来建立三个人揭牌的关系

        List<List<Card>> hands = new ArrayList<>();

        List<Card> hand1 = new ArrayList<>();
        List<Card> hand2 = new ArrayList<>();
        List<Card> hand3 = new ArrayList<>();

        hands.add(hand1);
        hands.add(hand2);
        hands.add(hand3);

        // 三个人每人揭牌5张, 每轮每人揭牌1张
        for(int i = 0;i < 5;i++){
            // j代表人数
            for(int j = 0;j < 3;j++){
                // 每次删除第一张牌
                Card card = cardList.remove(0);
                // 加入到每个人手中
                hands.get(j).add(card);
            }
        }

        System.out.println("第一个揭牌如下:");
        System.out.println(hand1);
        System.out.println("第二个揭牌如下:");
        System.out.println(hand2);
        System.out.println("第三个揭牌如下:");
        System.out.println(hand3);

        System.out.println("剩下的牌:");
        System.out.println(cardList);
    }
}
